package com.huike.clues.mapper;

import com.huike.common.core.domain.TreeSelect;
import com.huike.common.core.domain.entity.SysDeptDTO;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;

/**
 * @Desciption SysDeptMapper
 * @Author LUXIN
 * @Date 2023-10-16
 */
public interface SysDeptMapper {

    /**
     * 获取部门列表
     * @param sysDeptDTO
     * @return
     */
    List<SysDeptDTO> findList(SysDeptDTO sysDeptDTO);

    /**
     * 新增部门
     * @param dept
     */
    void addDept(SysDeptDTO dept);

    /**
     * 修改部门
     * @param dept
     */
    void updateDept(SysDeptDTO dept);

    /**
     * 查询上级部门列表
     * @param deptId
     * @return
     */
    SysDeptDTO findListById(Integer deptId);

    /**
     * 获取对应部门的详细信息
     * @param deptId
     * @return
     */
    SysDeptDTO findDept(Integer deptId);

    /**
     * 删除部门
     * @param deptId
     */
    void deleteDept(Integer deptId);

    /**
     * 获取部门下拉树列表
     * @param sysDeptDTO
     * @return
     */
    TreeSelect findListBy(SysDeptDTO sysDeptDTO);

    /**
     * 获取子部门列表
     * @param deptId
     * @return
     */
    List<TreeSelect> findChildren(Long deptId);

    /**
     * 获取所有的部门列表
     * @return
     */
    @Select("SELECT * FROM sys_dept where parent_id = #{id}")
    List<SysDeptDTO> List(Long id);



    /**
     * 根据部门id获取父id
     * @param deptId
     * @return
     */
    Long findById(Long deptId);

    /**
     * 获取祖级列表
     * @param parentId
     * @return
     */
    String findByIds(Long parentId);

    /**
     *  根据部门id查询是否有以该id作为父id的部门
     * @param deptId
     * @return
     */
    Integer findBy(Integer deptId);

    List<TreeSelect> findChildrens(List<Integer> checkedKeys);
}
